/*
 * (C) APUE
 * error processing functions
 */

#include "apue.h"
#include <stdarg.h>	/* ISO C variable arguments */

static void err_doit(const char* fmt, va_list ap); 


/*
 * Print a message and terminate.
 */
void err_quit(const char* fmt, ...)
{
	va_list ap;
	va_start(ap, fmt);
	err_doit(fmt, ap);
	va_end(ap);
	exit(1);
}

/*
 * Print a message and return
 */
void err_msg(const char* fmt, ...)
{
	va_list ap;
	va_start(ap, fmt);
	err_doit(fmt, ap);
	va_end(ap);
}

static void err_doit(const char* fmt, va_list ap)
{
	char buffer[MAXLINE];
	vsnprintf(buffer, MAXLINE, fmt, ap);
	strcat(buffer, "\n"); /* ? add a return ? */
	fflush(stdout);	/* in case stdout and stderr are the same */
	fputs(buffer, stderr);
	fflush(NULL);
}
